package org.example.service;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * @Component 组件，贴上次注解，Spring框架启动识别到这个注解就会管理此类
 *   value: 设置bean的id 等价 <bean id="xxx">
 *   如果不设置value：默认就是当前类名首字母变写,没有特别需求，可以不用手动设置bean的id
 */
//@Component("cService")
//@Component //通用注解

@Service //推荐
//@Repository //持久层Dao层使用
//@Controller//控制层使用
/**
 * 作用范围注解
 * @Scope 默认是单例
 *  singleton 单例，默认
 *  prototype 多例
 *
 */
//@Scope("prototype") //等价于  <bean scope="">
public class CustomService {
    public CustomService() {
        System.out.println("CustomService.CustomService");
    }
    public void sayHello() {
        System.out.println("CustomService.sayHello");
    }


    @PostConstruct //等价于 <bean init-method="init">
    public void init() {
        System.out.println("CustomService.init");
    }

    @PreDestroy //等价于 <bean destroy-method="destroy"> 单例有效，容器正常关闭
    public void destroy() {
        System.out.println("CustomService.destroy");
    }

}
